package com.kkb.service;

import com.kkb.bean.RankingExpress;
import com.kkb.bean.User;
import com.kkb.dao.BaseAdminDao;
import com.kkb.dao.BaseExpressDao;
import com.kkb.dao.BaseUserDao;
import com.kkb.dao.impl.AdminDaoMysql;
import com.kkb.dao.impl.BaseExpressMysql;
import com.kkb.dao.impl.UserDaoMysql;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserService {
    private static BaseUserDao dao = new UserDaoMysql();
    private static BaseExpressDao expressDao = new BaseExpressMysql();
    /**
     * 判断是否已注册
     * @param userPhone
     * @return
     */
    public static boolean isLogin(String userPhone){
        return dao.isLogin(userPhone);
    }

    public static boolean register(String userPhone){
        return dao.register(userPhone);
    }

    /**
     * 更新登录时间与ip
     * @param userPhone
     * @param date
     * @param ip
     */
    public static void updateLoginTimeAndIp(String userPhone, Date date, String ip){
        dao.updateLoginTime(userPhone,date,ip);
    }

    /**
     * 登录
     * @param username
     * @param password
     * @return
     */
    public static User login(String username, String password){
        return dao.login(username,password);
    }

    /**
     * 根据用户手机号码查找 用户信息
     *
     * @param phoneNumber 手机号
     * @return 查找到的用户信息
     */
    public static User findByPhoneNumber(String phoneNumber) {
        return dao.findByPhoneNumber(phoneNumber);
    }

    /**
     * 添加用户
     *
     * @param user 用户信息
     * @return true 添加成功，false失败
     */
    public static boolean insert(User user) {
        return dao.insert(user);
    }

    /**
     * 根据用户id 修改用户信息
     *
     * @param id   用户id
     * @param user 修改的用户信息
     * @return 修改的结果 true表示成功，false失败
     */
    public static boolean update(int id, User user) {
        return dao.update(id,user);
    }

    /**
     * 根据用户id ， 删除用户
     *
     * @param id 用户id
     * @return 删除的结果
     */
    public static boolean delete(int id) {
        return dao.delete(id);
    }

    /**
     * 查询用户信息列表
     * @param limit 是否分页
     * @param offset 从第几条数据开始
     * @param pageNumber 查询多少条
     * @return
     */
    public static List<User> findList(boolean limit,int offset,int pageNumber){
        return dao.findAll(limit,offset,pageNumber);
    }
    /**
     *  查询日新增用户数
     *  总的用户数
     * @return map
     */
    public static Map<String,Integer> console(){
        return dao.console();
    }

    /**
     * 根据 用户的快递数量来排行（总，年，月）
     * @return 保存三种排名的
     */
    public static Map<String,List<RankingExpress>> rankingByAll(){
        List<RankingExpress> rankingExpresses = expressDao.rankingByAll();
        List<RankingExpress> rankingExpresses1 = expressDao.rankingByYear();
        List<RankingExpress> rankingExpresses2 = expressDao.rankingByMonth();
        HashMap<String, List<RankingExpress>> map = new HashMap<>();
        map.put("data1",rankingExpresses);
        map.put("data2",rankingExpresses1);
        map.put("data3",rankingExpresses2);
        return map;
    }

}
